CodeIgniter ফ্রেমওয়ার্কে ফাইল আপলোড করার জন্য একটি বিল্ট-ইন File Uploading Class রয়েছে। এই ক্লাস ব্যবহার করে ফাইল আপলোড এবং তার ভ্যালিডেশন সহজে করা যায়। ফাইল ভ্যালিডেশন সঠিকভাবে পরিচালনা করলে ব্যবহারকারীর ভুল ইনপুট বা অবৈধ ফাইল থেকে সিস্টেম সুরক্ষিত থাকে।
ফাইল আপলোড প্রক্রিয়া পরিচালনার জন্য একটি Controller তৈরি করুন।
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class FileUpload extends Controller {
public function upload() {
helper(['form', 'url']);
// ফাইল ভ্যালিডেশন নিয়ম
$rules = [
'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,jpg,jpeg,png,gif]'
];
if (!$this->validate($rules)) {
// ত্রুটি বার্তা
return view('upload_form', [
'validation' => $this->validator
]);
} else {
$file = $this->request->getFile('file');
if ($file->isValid() && !$file->hasMoved()) {
$file->move(WRITEPATH . 'uploads');
return view('upload_form', ['success' => 'File uploaded successfully!']);
} else {
return view('upload_form', ['error' => $file->getErrorString()]);
}
}
}
}
$rules = [
'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,jpg,jpeg,png,gif]|mime_in[file,image/jpg,image/jpeg,image/png,image/gif]'
];
app/Views/upload_form.php
ফাইল তৈরি করুন:
<!DOCTYPE html>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<h1>Upload a File</h1>
<!-- ত্রুটি বার্তা -->
<?php if (isset($validation)): ?>
<div style="color: red;">
<?= $validation->listErrors(); ?>
</div>
<?php endif; ?>
<!-- সফল বার্তা -->
<?php if (isset($success)): ?>
<div style="color: green;">
<?= $success; ?>
</div>
<?php endif; ?>
<!-- ফর্ম -->
<form action="/fileupload/upload" method="post" enctype="multipart/form-data">
<?= csrf_field(); ?>
<label for="file">Choose a file:</label>
<input type="file" name="file" id="file">
<button type="submit">Upload</button>
</form>
<!-- ত্রুটি -->
<?php if (isset($error)): ?>
<div style="color: red;">
<?= $error; ?>
</div>
<?php endif; ?>
</body>
</html>
uploaded[file]
রুল ব্যবহার করুন।max_size[file,2048]
দিয়ে সাইজ সীমা বাড়ান।ext_in[file,jpg,png]
এবং mime_in
রুল ব্যবহার করুন।সার্ভারের php.ini
ফাইলের কনফিগারেশন পরিবর্তন করুন:
upload_max_filesize = 5M
post_max_size = 8M
if ($file->hasMoved()) {
echo "File already moved!";
}
if (!$file->isValid()) {
echo $file->getErrorString();
}
আপনার ফাইল সংরক্ষণের জন্য কাস্টম লোকেশন নির্ধারণ করতে পারেন:
$file->move(WRITEPATH . 'custom_uploads');
$file->move(WRITEPATH . 'uploads', 'new_filename.jpg');
আপলোডকৃত ফাইল থেকে বিস্তারিত তথ্য পেতে পারেন:
$file = $this->request->getFile('file');
echo $file->getName(); // ফাইলের নাম
echo $file->getSize(); // সাইজ (বাইটে)
echo $file->getExtension(); // এক্সটেনশন
echo $file->getMimeType(); // MIME টাইপ
CodeIgniter-এ ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং একটি শক্তিশালী ফিচার। এটি ব্যবহারকারীর অবৈধ ইনপুট এবং সিস্টেমের ডেটা ক্ষতির ঝুঁকি কমায়। সঠিকভাবে ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং করলে অ্যাপ্লিকেশনের নিরাপত্তা এবং কার্যকারিতা বৃদ্ধি পায়।
Read more